﻿




using System;
using System.Collections.Generic;
using Hotpot.Infrastructure;
using Hotpot.Models;
using Hotpot.Modules.Membership.Models;

namespace Hotpot.Modules.Membership.Services
{
    public interface IUserService
    {
        User GetUser(string name);
        User GetUserByModuleData(string moduleName, string data);
        IEnumerable<User> FindUsers(UserSearchCriteria criteria);
        ModelResult<User> AddUser(UserInputAdd userInput);
        ModelResult<User> EditUser(User user, UserInputEdit userInput);
        void RemoveUser(User user);
        string GetModuleData(User user, string moduleName);
        void SetModuleData(User user, string moduleName, string data);
        void EnsureAnonymousUser();
        bool SignIn(string name);
        bool SignIn(Func<User> getUser, Action<User> afterSignIn);
        void SignOut();
    }
}
